home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!sun-barr!ames!pasteur!nntp
- From: scott.oaks@East.Sun.COM (Scott Oaks)
- Newsgroups: comp.sources.x
- Subject: v15i166: OpenLook Virtual Window Mgr (3.0), Part20/21
- Message-ID: <1992Feb4.140114.8411@pasteur.Berkeley.EDU>
- Date: 4 Feb 92 14:01:14 GMT
- References: <csx-15i147-olvwm-3.0@uunet.UU.NET>
- Sender: dcmartin@msi.com (David C. Martin - Moderator)
- Organization: University of California, at Berkeley
- Lines: 2103
- Approved: dcmartin@msi.com
- Nntp-Posting-Host: postgres.berkeley.edu
-
- Submitted-by: scott.oaks@East.Sun.COM (Scott Oaks)
- Posting-number: Volume 15, Issue 166
- Archive-name: olvwm-3.0/part20
-
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # The tool that generated this appeared in the comp.sources.unix newsgroup;
- # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
- # If this archive is complete, you will see the following message at the end:
- # "End of archive 20 (of 21)."
- # Contents: Makefile.sunpro WinInfo.c defaults.c environ.h globals.h
- # i18n.c iconimage.h iconmask.h mem.c olgx_impl.h properties.h
- # screen.h slave.c virtual.h winbusy.c
- # Wrapped by dcmartin@fascet on Tue Jan 14 05:54:49 1992
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'Makefile.sunpro' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Makefile.sunpro'\"
- else
- echo shar: Extracting \"'Makefile.sunpro'\" \(3103 characters\)
- sed "s/^X//" >'Makefile.sunpro' <<'END_OF_FILE'
- X.KEEP_STATE:
- X
- X# Set this to the directory to place the olvwm executable
- XINSTALLDIR = ${OPENWINHOME}/bin
- X
- X# If you want to use the OPENWINDOWS help facility, then set HELPDIR
- X# to the directory where those files are kept. If you cannot write
- X# to that directory but still want to install the helpfile, set HELPDIR
- X# to some other directory and add that directory to your HELPPATH.
- X# If you don't want to install the help file at all, set HELPDIR to /dev/null.
- XHELPDIR = ${OPENWINHOME}/lib/info
- X
- X# Where to install the man pages: man1 dir is where olvwm.man will go;
- X# and man5 dir is where olvwmrc.man will go; youmay want to set these
- X# to a local directory somewhere.
- X# If you don't want to install the man pages, set MAN?DIR to /dev/null.
- X
- XMAN1DIR = ${OPENWINHOME}/man/man1
- XMAN5DIR = ${OPENWINHOME}/man/man5
- X
- X# If you don't have olwm installed anywhere and want to install the olwm
- X# man page (which discusses most of the olvwm functionality too) uncomment
- X# out the following lines
- X#OLWMMAN = olwm.man
- X
- X# Set this to the debugging options you'd like
- XDEBUG = -O
- X
- X#
- X# You shouldn't need to change anything below this line
- X
- XINC = -I${OPENWINHOME}/include
- XCFLAGS = ${INC} ${DEBUG} -DOW_I18N_L3 -DSUNDAE -DSHAPE
- X
- XHEADERS = cmdstream.h defaults.h environ.h events.h gettext.h \
- X globals.h group.h helpcmd.h i18n.h iconimage.h iconmask.h \
- X kbdfuncs.h list.h mem.h menu.h notice.h olcursor.h \
- X olgx_impl.h ollocale.h olwm.h patchlevel.h properties.h \
- X resources.h screen.h slots.h st.h virtual.h win.h
- X
- XSRCS = Debug.c Error.c Notice.c Select.c WinInfo.c atom.c client.c \
- X cmdstream.c defaults.c environ.c evbind.c events.c gettext.c \
- X group.c helpsend.c i18n.c kbdfuncs.c list.c mem.c menu.c \
- X moveresize.c olwm.c properties.c resources.c screen.c services.c \
- X slave.c slots.c st.c states.c usermenu.c usleep.c virtual.c \
- X win.c winbusy.c winbutton.c wincolor.c winframe.c wingframe.c \
- X winicon.c winipane.c winmenu.c winnofoc.c winpane.c winpinmenu.c \
- X winpush.c winresize.c winroot.c olvwmrc.c images.c \
- X ol_button.c
- X
- XLDFLAGS = -L${OPENWINHOME}/lib
- XLIBS = ${LDFLAGS} -lolgx -lX11 -lXext -ll -lm
- X
- XOBJS = ${SRCS:.c=.o} version.o
- X
- Xolvwm : ${OBJS}
- X cc -o olvwm ${OBJS} ${LIBS}
- X
- Xversion.c : ${SRCS} ${HEADERS}
- X @echo -n "#ident \"@(#)olvwm version compiled " > version.c
- X @/bin/sh -c 'echo `date` \"' >> version.c
- X
- Xparse.c : parse.l
- X lex -t parse.l > parse.c
- X
- Xolvwmrc.c : olvwmrc.y
- X yacc olvwmrc.y
- X mv y.tab.c olvwmrc.c
- X
- Xolvwmrc.o : parse.c olvwmrc.c
- X
- Xclean :
- X /bin/rm -f olvwm .make.state .nse_depinfo version.c parse.c olvwmrc.c *.o core errs ,* .emacs_* tags TAGS make.log MakeOut "#"*
- X
- Xinstall:
- X @echo "Installing olvwm in $(INSTALLDIR)"
- X @/bin/cp olvwm $(INSTALLDIR)
- X @echo "Installing help file in $(HELPDIR)"
- X @/bin/cp olvwm.info $(HELPDIR)
- X @echo "Installing olvwm man page in $(MAN1DIR)"
- X @/bin/cp olvwm.man olvwm.1
- X @/bin/cp olvwm.1 $(MAN1DIR)
- X @/bin/rm -f olvwm.1
- X @echo "Installing olvwmrc man page in $(MAN5DIR)"
- X @/bin/cp olvwmrc.man olvwmrc.5
- X @/bin/cp olvwmrc.5 $(MAN5DIR)
- X @/bin/rm -f olvwmrc.5
- X -@/bin/cp ${OLWMMAN} ${MAN1DIR}/olwm.1 >/dev/null 2>&1
- END_OF_FILE
- if test 3103 -ne `wc -c <'Makefile.sunpro'`; then
- echo shar: \"'Makefile.sunpro'\" unpacked with wrong size!
- fi
- # end of 'Makefile.sunpro'
- fi
- if test -f 'WinInfo.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'WinInfo.c'\"
- else
- echo shar: Extracting \"'WinInfo.c'\" \(3093 characters\)
- sed "s/^X//" >'WinInfo.c' <<'END_OF_FILE'
- X/*
- X * (c) Copyright 1989 Sun Microsystems, Inc. Sun design patents
- X * pending in the U.S. and foreign countries. See LEGAL_NOTICE
- X * file for terms of the license.
- X */
- X
- X#ident "@(#)WinInfo.c 1.1 olvwm version 1/3/92"
- X
- X/*
- X * Based on
- X#ident "@(#)WinInfo.c 26.5 91/09/14 SMI"
- X *
- X */
- X
- X#include <errno.h>
- X#include <stdio.h>
- X#include <memory.h>
- X#include <X11/Xos.h>
- X#include <X11/Xlib.h>
- X#include <X11/Xutil.h>
- X#include <X11/Xatom.h>
- X
- X#include "i18n.h"
- X#include "olwm.h"
- X#include "win.h"
- X#include "st.h"
- X#include "mem.h"
- X
- Xst_table *wiHashTable;
- Xst_table *vHashTable;
- X
- Xstatic int
- XwiCompare( w1, w2 )
- Xregister char *w1, *w2;
- X{
- X return ((Window)w1) - ((Window)w2);
- X}
- X
- Xstatic int
- XwiHash( w1, modulus )
- X register char *w1;
- X register int modulus;
- X{
- X return ((Window)w1) % modulus;
- X}
- X
- X/*
- X * initialize the hash tables
- X * returns: True - success
- X * False - failure
- X */
- X/*ARGSUSED*/ /* dpy arg will be used when multiple Displays supported */
- XWIInit( dpy )
- XDisplay *dpy;
- X{
- X wiHashTable = st_init_table(wiCompare, wiHash);
- X vHashTable = st_init_table(wiCompare, wiHash);
- X}
- X
- X/*
- X * Save window information with the associated window, for later dispatch
- X */
- Xvoid
- XWIInstallInfo(info)
- XWinGeneric *info;
- X{
- X if (WIGetInfo(info->core.self) != NULL)
- X {
- X ErrorGeneral(
- X gettext("Tried to duplicate-register a window -- bailing"));
- X }
- X st_insert(wiHashTable, (int)info->core.self, (char *)info);
- X}
- X
- Xvoid
- XVInstallInfo(info)
- XWinGeneric *info;
- X{
- X if (VGetInfo(info->core.virtual) != NULL)
- X ErrorGeneral(gettext("Tried to duplicate register a virtual window"));
- X st_insert(vHashTable, (int) info->core.virtual, (char *) info);
- X}
- X
- X/*
- X * delete storage for window information
- X * returns: True - window entry deleted
- X * False - window entry not found
- X */
- XBool
- XWIUninstallInfo(win)
- XWindow win;
- X{
- X WinGeneric *oldInfo;
- X Window tmpWin = win;
- X Window *tmpWinPtr = &tmpWin;
- X int ret;
- X
- X ret = (st_delete(wiHashTable, (char *)tmpWinPtr, (char *)&oldInfo));
- X /*
- X * We could have a corresponding VUninstallInfo, but it's easier
- X * to do it here -- just make sure there is a virtual window
- X */
- X if (oldInfo) {
- X if (tmpWin = oldInfo->core.virtual)
- X st_delete(vHashTable, (char *)tmpWinPtr, (char *)&oldInfo);
- X }
- X return ret;
- X}
- X
- X/*
- X * delete storage for window information
- X * returns: True - window entry deleted
- X * False - window entry not found
- X */
- XBool
- XVIUninstallInfo(win)
- XWindow win;
- X{
- X WinGeneric *oldInfo;
- X Window tmpWin = win;
- X Window *tmpWinPtr = &tmpWin;
- X
- X return st_delete(vHashTable, (char *)tmpWinPtr, (char *)&oldInfo);
- X}
- X
- X/*
- X * retrieve information associated with a window
- X * returns: Pointer to WinGeneric struct if window is found
- X * NULL if not found
- X */
- XWinGeneric *
- XWIGetInfo(win)
- XWindow win;
- X{
- X WinGeneric *winInfo = NULL;
- X
- X st_lookup(wiHashTable, win, &winInfo);
- X return winInfo;
- X}
- X
- XWinGeneric *
- XVGetInfo(win)
- XWindow win;
- X{
- X WinGeneric *winInfo = NULL;
- X
- X st_lookup(vHashTable, win, &winInfo);
- X return winInfo;
- X}
- X
- X/*
- X * apply a function to all windows
- X */
- Xvoid
- XWIApply(f,c)
- Xenum st_retval (*f)();
- Xvoid *c;
- X{
- X st_foreach(wiHashTable, f, c);
- X}
- END_OF_FILE
- if test 3093 -ne `wc -c <'WinInfo.c'`; then
- echo shar: \"'WinInfo.c'\" unpacked with wrong size!
- fi
- # end of 'WinInfo.c'
- fi
- if test -f 'defaults.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'defaults.c'\"
- else
- echo shar: Extracting \"'defaults.c'\" \(3863 characters\)
- sed "s/^X//" >'defaults.c' <<'END_OF_FILE'
- X/*
- X * (c) Copyright 1989, 1990 Sun Microsystems, Inc. Sun design patents
- X * pending in the U.S. and foreign countries. See LEGAL_NOTICE
- X * file for terms of the license.
- X */
- X
- X#ident "@(#)defaults.c 26.11 91/09/14 SMI"
- X
- X#ifdef SYSV
- X#include <sys/types.h>
- X#include <unistd.h>
- X#endif
- X
- X#include <ctype.h>
- X#include <errno.h>
- X#include <stdio.h>
- X#ifdef SYSV
- X#include <string.h>
- X#else
- X#include <strings.h>
- X#endif
- X#include <sys/file.h>
- X#include <X11/Xos.h>
- X#include <X11/Xlib.h>
- X#include <X11/Xutil.h>
- X#include <X11/Xatom.h>
- X#include <X11/Xresource.h>
- X
- Xchar *getenv();
- X
- X#include "i18n.h"
- X#include "ollocale.h"
- X#include "olwm.h"
- X#include "defaults.h"
- X#include "globals.h"
- X#include "resources.h"
- X
- Xextern char *ProgramName;
- X
- X/* private data */
- Xstatic void parseResourceDefaults();
- Xstatic void parseApplicationDefaults();
- X
- X/*
- X * GetDefaults - Set up global OlwmDB with built-in default values.
- X * Then, initialize all the appropriate olwm variables
- X * using the information in the OlwmDB
- X */
- Xvoid
- XGetDefaults(dpy, commandlineDB)
- XDisplay *dpy;
- XXrmDatabase commandlineDB;
- X{
- X /* put resource settings from default files into global OlwmDB */
- X parseApplicationDefaults();
- X parseResourceDefaults( dpy );
- X
- X /* merge command line options last into global OlwmDB
- X * notice that commandlineDB is destroyed by this call!
- X */
- X if ( commandlineDB != NULL )
- X (void) XrmMergeDatabases( commandlineDB, &OlwmDB );
- X
- X InitGlobals(dpy);
- X}
- X
- X
- X/*
- X * parseApplicationDefaults - get resource settings from application
- X * default file
- X */
- Xstatic void
- XparseApplicationDefaults()
- X{
- X XrmDatabase applicationDB = NULL;
- X char filename[1024];
- X char *openWinPath;
- X Bool notFound = False;
- X
- X /* look for application default file */
- X if ( (openWinPath = getenv( "OPENWINHOME" )) != NULL )
- X {
- X (void) strcpy( filename, openWinPath );
- X (void) strcat( filename, "/lib/app-defaults/" );
- X (void) strcat( filename, ProgramName );
- X if ( access( filename, R_OK ) != 0 )
- X notFound = True;
- X }
- X else
- X notFound = True;
- X
- X if ( notFound )
- X {
- X (void) strcpy( filename, "/usr/lib/X11/app-defaults/" );
- X (void) strcat( filename, ProgramName );
- X }
- X
- X applicationDB = XrmGetFileDatabase( filename );
- X if ( applicationDB != NULL )
- X (void) XrmMergeDatabases( applicationDB, &OlwmDB );
- X}
- X
- X/*
- X * parseResourceDefaults - get resource settings from default user locations.
- X * Look first for server property - if it's there, use it alone.
- X * If it's not there, look for XENVIRONMENT file and use it.
- X * If still no luck, use $HOME/.Xdefaults.
- X */
- Xstatic void
- XparseResourceDefaults( dpy )
- XDisplay *dpy;
- X{
- X XrmDatabase serverDB = NULL, homeDB = NULL;
- X char filename[1024];
- X unsigned long nitems, remain;
- X char *resourceString;
- X char *environmentFile;
- X
- X /* look for RESOURCE_MANAGER property on root window of screen 0 */
- X resourceString = GetWindowProperty(dpy, RootWindow(dpy, 0),
- X XA_RESOURCE_MANAGER, 0L, 100000000L,
- X /* REMIND what should the length really be ? */
- X XA_STRING, 0, &nitems, &remain);
- X if ((resourceString != NULL) && (nitems != 0))
- X {
- X serverDB = XrmGetStringDatabase( resourceString );
- X (void) XrmMergeDatabases( serverDB, &OlwmDB );
- X XFree( resourceString );
- X return;
- X }
- X
- X /* if unsuccessful, look for user defaults:
- X * first try XENVIRONMENT, next in $HOME/.Xdefaults
- X */
- X if ( ( (environmentFile = getenv( "XENVIRONMENT" )) == NULL )
- X || ( access( environmentFile, R_OK ) != 0 ) )
- X {
- X if ( (environmentFile = getenv( "HOME" )) != NULL )
- X {
- X (void) strcpy( filename, environmentFile );
- X (void) strcat( filename, "/" );
- X (void) strcat( filename, ".Xdefaults" );
- X environmentFile = filename;
- X }
- X }
- X if ( environmentFile != NULL )
- X {
- X homeDB = XrmGetFileDatabase( environmentFile );
- X (void) XrmMergeDatabases( homeDB, &OlwmDB );
- X }
- X return;
- X}
- END_OF_FILE
- if test 3863 -ne `wc -c <'defaults.c'`; then
- echo shar: \"'defaults.c'\" unpacked with wrong size!
- fi
- # end of 'defaults.c'
- fi
- if test -f 'environ.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'environ.h'\"
- else
- echo shar: Extracting \"'environ.h'\" \(279 characters\)
- sed "s/^X//" >'environ.h' <<'END_OF_FILE'
- X/*
- X * (c) Copyright 1990 Sun Microsystems, Inc. Sun design patents
- X * pending in the U.S. and foreign countries. See LEGAL_NOTICE
- X * file for terms of the license.
- X */
- X
- X#ident "@(#)environ.h 1.5 91/09/14 SMI"
- X
- Xextern char **MakeEnviron(/* ScreenInfo *scrInfo */);
- END_OF_FILE
- if test 279 -ne `wc -c <'environ.h'`; then
- echo shar: \"'environ.h'\" unpacked with wrong size!
- fi
- # end of 'environ.h'
- fi
- if test -f 'globals.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'globals.h'\"
- else
- echo shar: Extracting \"'globals.h'\" \(4138 characters\)
- sed "s/^X//" >'globals.h' <<'END_OF_FILE'
- X/*
- X * (c) Copyright 1990 Sun Microsystems, Inc. Sun design patents
- X * pending in the U.S. and foreign countries. See LEGAL_NOTICE
- X * file for terms of the license.
- X */
- X
- X#ident "@(#)globals.h 1.1 olvwm version 1/3/92"
- X
- X/*
- X * Based on
- X#ident "@(#)globals.h 26.26 91/10/04 SMI"
- X *
- X */
- X
- X#include "list.h"
- X
- Xtypedef struct {
- X unsigned int modmask;
- X KeyCode keycode;
- X} KeySpec;
- X
- Xtypedef enum { BeepAlways, BeepNever, BeepNotices } BeepStatus;
- X
- Xtypedef enum { KbdSunView, KbdBasic, KbdFull } MouselessMode;
- X
- Xtypedef enum { GridNone, GridInvisible, GridVisible } VirtualGridType;
- X
- Xtypedef enum { UseNone, UseVDM, UseAll } ImageType;
- X
- Xtypedef struct _globalResourceVariables {
- X char *WorkspaceColor;
- X char *WindowColor;
- X char *ForegroundColor;
- X char *BackgroundColor;
- X char *BorderColor;
- X Bool ReverseVideo;
- X Bool PaintWorkspace;
- X Bool F3dUsed;
- X Bool F3dFrames;
- X Bool F3dResize;
- X XFontStruct *TitleFontInfo;
- X XFontStruct *TextFontInfo;
- X XFontStruct *ButtonFontInfo;
- X XFontStruct *IconFontInfo;
- X XFontStruct *GlyphFontInfo;
- X Cursor BasicPointer;
- X Cursor MovePointer;
- X Cursor BusyPointer;
- X Cursor IconPointer;
- X Cursor ResizePointer;
- X Cursor MenuPointer;
- X Cursor QuestionPointer;
- X Cursor TargetPointer;
- X Cursor PanPointer;
- X Bool FocusFollowsMouse;
- X Bool ReparentFlag;
- X char *DefaultWinName;
- X int SaveWorkspaceTimeout;
- X int FlashTime;
- X Bool FShowMenuButtons; /* XXX */
- X Bool FShowPinnedMenuButtons; /* XXX */
- X IconPreference IconPlacement;
- X Bool FSnapToGrid;
- X Bool FocusLenience;
- X Bool DragWindow;
- X Bool AutoRaise;
- X int AutoRaiseDelay;
- X Bool PopupJumpCursor;
- X Bool ColorLocked;
- X Bool PPositionCompat;
- X Bool RefreshRecursively;
- X BeepStatus Beep;
- X int EdgeThreshold;
- X int DragRightDistance;
- X int MoveThreshold;
- X int ClickMoveThreshold;
- X int DoubleClickTime;
- X int RubberBandThickness;
- X KeySpec FrontKey;
- X KeySpec HelpKey;
- X KeySpec OpenKey;
- X KeySpec ConfirmKey;
- X KeySpec CancelKey;
- X KeySpec ColorLockKey;
- X KeySpec ColorUnlockKey;
- X List *Minimals;
- X int MouseChordTimeout;
- X Bool SingleScreen;
- X Bool AutoReReadMenuFile;
- X Bool KeepTransientsAbove;
- X Bool TransientsSaveUnder;
- X Bool TransientsTitled;
- X Bool SelectWindows;
- X Bool ShowMoveGeometry;
- X Bool ShowResizeGeometry;
- X Bool InvertFocusHighlighting;
- X Bool RunSlaveProcess;
- X Bool SelectToggleStacking;
- X int FlashCount;
- X char *DefaultIconImage;
- X char *DefaultIconMask;
- X Bool ServerGrabs;
- X int IconFlashCount;
- X Bool SelectDisplaysMenu;
- X int SelectionFuzz;
- X Bool AutoInputFocus;
- X Bool AutoColorFocus;
- X Bool ColorTracksInputFocus;
- X int IconFlashOnTime;
- X int IconFlashOffTime;
- X MouselessMode Mouseless;
- X Bool RaiseOnActivate;
- X Bool RestackWhenWithdraw;
- X#ifdef OW_I18N_L3
- X OLLC LC;
- X#endif /* OW_I18N_L3 */
- X/* Following are three entries are strictly for debugging purposes and
- X * are not mentioned in the usage message or doc.
- X * Orphaned events are events that are associated with a window or frame
- X * has no entry in the frame hash table, or events that are not handled by the
- X * various event handlers.
- X * 'PrintAll' is useful for when verification of an events existance is needed.
- X */
- X Bool PrintOrphans;
- X Bool PrintAll;
- X Bool Synchronize;
- X/*
- X * Following are entries for the Virtual Desktop.
- X */
- X char *VirtualDesktop;
- X int VDMScale;
- X Bool AllowMoveIntoDesktop;
- X Bool ArrowInRoot;
- X char *VirtualGeometry;
- X char *VirtualFontName;
- X char *VirtualBackgroundMap;
- X char *VirtualBackgroundColor;
- X char *VirtualPixmapColor;
- X char *VirtualIconGeometry;
- X char *VirtualForegroundColor;
- X char *VirtualFontColor;
- X Bool VirtualIconic;
- X List *StickyList;
- X Bool UseRelativePosition;
- X Bool GrabVirtualKeys;
- X VirtualGridType VirtualGrid;
- X char *VirtualGridColor;
- X Bool VirtualRaiseOnMove;
- X Bool VirtualRaiseVDM;
- X/*
- X * Following are entries added with olvwm but which aren't strictly
- X * dependent on the virtual nature of olvwm
- X */
- X Bool AutoShowRootMenu;
- X int AutoRootMenuX;
- X int AutoRootMenuY;
- X char *InputFocusColor;
- X Bool FullSizeZoomX;
- X List *NoDecors;
- X char *ResizePosition;
- X ImageType UseImageMenu;
- X Bool VirtualMoveGroups;
- X} GlobalResourceVariables;
- X
- Xextern GlobalResourceVariables GRV;
- END_OF_FILE
- if test 4138 -ne `wc -c <'globals.h'`; then
- echo shar: \"'globals.h'\" unpacked with wrong size!
- fi
- # end of 'globals.h'
- fi
- if test -f 'i18n.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'i18n.c'\"
- else
- echo shar: Extracting \"'i18n.c'\" \(3905 characters\)
- sed "s/^X//" >'i18n.c' <<'END_OF_FILE'
- X/*
- X * (c) Copyright 1989, 1990 Sun Microsystems, Inc. Sun design patents
- X * pending in the U.S. and foreign countries. See LEGAL_NOTICE
- X * file for terms of the license.
- X */
- X
- X#ifdef OW_I18N
- X
- Xstatic char sccsid[] ="@(#) i18n.c 1.3 91/09/14 SMI";
- X
- X#include "i18n.h"
- X#include "mem.h"
- X
- X#include <stdio.h>
- X#include <X11/Xlib.h>
- X#include <X11/Xlibos.h>
- X#include <X11/Xatom.h>
- X
- X/*
- X * When converting the wide char to CTEXT, we need to estimate the
- X * space, but there are no right way to do this without actually
- X * converting. "wslen(wchar) * sizeof(wchar_t)" will give us the how
- X * many bytes consume by the characters, but this does not include the
- X * any control sequences. I decided use fudge bytes for this control
- X * sequnces for now. This is absolutely bad idea to having a this
- X * value, but otherwise we need to convert it twice. One control
- X * sequnce require the 3 bytes, so, following allow to switch the code
- X * set 6 times.
- X */
- X#define WCSTOCTS_FUDGE_BYTES (3 * 6)
- X
- Xwchar_t *
- Xmbstowcsdup(mbs)
- Xregister char *mbs;
- X{
- X register int n;
- X register wchar_t *wcs;
- X
- X if (mbs == NULL)
- X return NULL;
- X
- X n = strlen(mbs) + 1;
- X wcs = (wchar_t *) MemAlloc(n * sizeof(wchar_t));
- X mbstowcs(wcs, mbs, n);
- X#if DEBUG > 4
- Xfprintf(stderr, "mbstowcsdup: mbs [%s] -> wcs [%ws]\n", mbs, wcs);
- X#endif
- X
- X return wcs;
- X}
- X
- X
- Xwchar_t *
- Xctstowcsdup(cts)
- Xregister char *cts;
- X{
- X register int n;
- X register wchar_t *wcs;
- X
- X if (cts == NULL)
- X return NULL;
- X
- X n = strlen(cts) + 1;
- X wcs = (wchar_t *) MemAlloc(n * sizeof(wchar_t));
- X ctstowcs(wcs, cts, n);
- X
- X#ifdef DEBUG > 4
- Xfprintf(stderr, "ctstowcsdup: cts [%d:", n);
- Xascii_dump(cts);
- Xfprintf(stderr, "] -> wcs [%d:%ws]\n",
- X (n * sizeof(wchar_t)), wcs);
- X#endif
- X
- X return wcs;
- X}
- X
- X
- Xchar *
- Xctstombsdup(cts)
- Xregister char *cts;
- X{
- X register int n;
- X register wchar_t *wcs;
- X register char *mbs;
- X
- X wcs = ctstowcsdup(cts);
- X if (wcs == NULL)
- X return NULL;
- X
- X n = wslen(wcs) * sizeof(wchar_t) + 1;
- X mbs = (char *) MemAlloc(n);
- X wcstombs(mbs, wcs, n);
- X
- X MemFree (wcs);
- X return mbs;
- X}
- X
- X
- Xchar *
- Xwcstoctsdup(wcs)
- Xregister wchar_t *wcs;
- X{
- X register int n;
- X register char *cts;
- X
- X if (wcs == NULL)
- X return NULL;
- X
- X n = wslen(wcs) * sizeof(wchar_t) + WCSTOCTS_FUDGE_BYTES + 1;
- X cts = (char *) MemAlloc(n);
- X /*
- X * FIX_ME: We should check the result from wcstotcs, and if
- X * cts does not have a enough space, we should re-allocate the
- X * space and try again.
- X */
- X wcstocts(cts, wcs, n);
- X
- X#ifdef DEBUG > 4
- Xfprintf(stderr, "wcstoctsdup: wcs [%d:%ws] -> cts [%d:",
- X wslen(wcs), wcs, n+1);
- Xascii_dump(cts);
- Xfprintf(stderr, "]\n");
- X#endif
- X
- X return cts;
- X}
- X
- XXwcFetchName(dpy, w, name)
- XDisplay *dpy;
- XWindow w;
- Xwchar_t **name;
- X{
- X return XwcGetTextWindowProperty(XA_WM_NAME, dpy, w, name);
- X}
- X
- X
- XXwcGetIconName(dpy, w, name)
- XDisplay *dpy;
- XWindow w;
- Xwchar_t **name;
- X{
- X return XwcGetTextWindowProperty(XA_WM_ICON_NAME, dpy, w, name);
- X}
- X
- X
- XXwcGetTextWindowProperty(props, dpy, w, name)
- XAtom props;
- XDisplay *dpy;
- XWindow w;
- Xwchar_t **name;
- X{
- X register int len;
- X int ret;
- X Atom actual_type;
- X int actual_format;
- X unsigned long nitems;
- X unsigned long leftover;
- X unsigned char *data = NULL;
- X extern Atom AtomCompoundText;
- X
- X ret = 0;
- X if (XGetWindowProperty(dpy, w, props, 0L, (long)BUFSIZ, False,
- X AnyPropertyType, &actual_type, &actual_format,
- X &nitems, &leftover, &data) != Success)
- X {
- X *name = NULL;
- X }
- X else if ((actual_type == XA_STRING) && (actual_format == 8))
- X {
- X *name = mbstowcsdup((char *)data);
- X ret = 1;
- X }
- X else if ((actual_type == AtomCompoundText) && (actual_format == 8))
- X {
- X *name = ctstowcsdup((char *)data);
- X ret = 1;
- X }
- X else
- X *name = NULL;
- X
- X if (data)
- X Xfree((char *)data);
- X return ret;
- X}
- X
- X
- X#ifdef DEBUG > 4
- Xascii_dump(s)
- Xregister unsigned char *s;
- X{
- X while (*s)
- X {
- X if (*s < ' ')
- X fprintf(stderr, "^%c", *s + '@');
- X else if (*s > 0x80)
- X fprintf(stderr, "(%2x)", *s);
- X else
- X fputc(*s, stderr);
- X s++;
- X }
- X}
- X#endif DEBUG
- X
- X#endif OW_I18N
- END_OF_FILE
- if test 3905 -ne `wc -c <'i18n.c'`; then
- echo shar: \"'i18n.c'\" unpacked with wrong size!
- fi
- # end of 'i18n.c'
- fi
- if test -f 'iconimage.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'iconimage.h'\"
- else
- echo shar: Extracting \"'iconimage.h'\" \(2726 characters\)
- sed "s/^X//" >'iconimage.h' <<'END_OF_FILE'
- X/*
- X * (c) Copyright 1991 Sun Microsystems, Inc. Sun design patents
- X * pending in the U.S. and foreign countries. See LEGAL_NOTICE
- X * file for terms of the license.
- X */
- X
- X#ident "@(#)iconimage.h 26.9 91/09/14 SMI"
- X
- X#define iconimage_width 64
- X#define iconimage_height 48
- Xstatic unsigned char iconimage_bits[] = {
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4,
- X 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x09, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0xb9, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5c,
- X 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xae, 0x4e, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x20, 0x17, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xab,
- X 0x3a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0x45, 0x94, 0x03, 0x00, 0x00,
- X 0x00, 0x00, 0x64, 0xaa, 0xca, 0x04, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x14,
- X 0xe5, 0x09, 0x00, 0x00, 0x00, 0x00, 0xb9, 0xa9, 0xb2, 0x13, 0x00, 0x00,
- X 0x00, 0x80, 0x5c, 0x53, 0x59, 0x27, 0x00, 0x00, 0x00, 0x40, 0xae, 0xa6,
- X 0xac, 0x4e, 0x00, 0x00, 0x00, 0x20, 0x17, 0x4d, 0x56, 0x9d, 0x00, 0x00,
- X 0x00, 0x90, 0xab, 0x1a, 0xab, 0x3a, 0x01, 0x00, 0x00, 0xc8, 0x45, 0x94,
- X 0x55, 0x75, 0x06, 0x00, 0x00, 0x98, 0xaa, 0xca, 0xaa, 0x2a, 0x09, 0x00,
- X 0x00, 0x30, 0x15, 0xe5, 0x54, 0x95, 0x18, 0x00, 0x00, 0x60, 0xaa, 0xb2,
- X 0xa9, 0x4a, 0x0c, 0x00, 0x00, 0xc0, 0x54, 0x59, 0x53, 0x25, 0x06, 0x00,
- X 0x00, 0x80, 0xa9, 0xac, 0xa6, 0x12, 0x03, 0x00, 0x00, 0x00, 0x53, 0x56,
- X 0x4d, 0x89, 0x01, 0x00, 0x00, 0x00, 0x26, 0xab, 0x9a, 0xc4, 0x00, 0x00,
- X 0x00, 0x00, 0x8c, 0x55, 0x35, 0x62, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xaa,
- X 0x2a, 0x31, 0x00, 0x00, 0x00, 0x00, 0x70, 0x55, 0x95, 0x18, 0x00, 0x00,
- X 0x00, 0x00, 0x60, 0xaa, 0x4a, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x54,
- X 0x25, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0xa9, 0x12, 0x03, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x53, 0x89, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6,
- X 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x62, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x18, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0,
- X 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
- X 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
- END_OF_FILE
- if test 2726 -ne `wc -c <'iconimage.h'`; then
- echo shar: \"'iconimage.h'\" unpacked with wrong size!
- fi
- # end of 'iconimage.h'
- fi
- if test -f 'iconmask.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'iconmask.h'\"
- else
- echo shar: Extracting \"'iconmask.h'\" \(2721 characters\)
- sed "s/^X//" >'iconmask.h' <<'END_OF_FILE'
- X/*
- X * (c) Copyright 1991 Sun Microsystems, Inc. Sun design patents
- X * pending in the U.S. and foreign countries. See LEGAL_NOTICE
- X * file for terms of the license.
- X */
- X
- X#ident "@(#)iconmask.h 1.4 91/09/14 SMI"
- X
- X#define iconmask_width 64
- X#define iconmask_height 48
- Xstatic unsigned char iconmask_bits[] = {
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
- X 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff,
- X 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff,
- X 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00,
- X 0x00, 0x00, 0xfc, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
- X 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00,
- X 0x00, 0x80, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
- X 0xff, 0x7f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
- X 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf8, 0xff, 0xff,
- X 0xff, 0xff, 0x07, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00,
- X 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0xff, 0xff,
- X 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00,
- X 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff,
- X 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00,
- X 0x00, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
- X 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0x00,
- X 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
- X 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
- X 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
- X 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
- X 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
- END_OF_FILE
- if test 2721 -ne `wc -c <'iconmask.h'`; then
- echo shar: \"'iconmask.h'\" unpacked with wrong size!
- fi
- # end of 'iconmask.h'
- fi
- if test -f 'mem.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'mem.c'\"
- else
- echo shar: Extracting \"'mem.c'\" \(3454 characters\)
- sed "s/^X//" >'mem.c' <<'END_OF_FILE'
- X/*
- X * (c) Copyright 1989 Sun Microsystems, Inc. Sun design patents
- X * pending in the U.S. and foreign countries. See LEGAL_NOTICE
- X * file for terms of the license.
- X */
- X
- X#ident "@(#)mem.c 26.9 91/09/14 SMI"
- X
- X/*
- X * Safe memory allocation/free routines - front-ends the C library functions
- X *
- X */
- X
- X#include <malloc.h>
- X#include <memory.h>
- X#include <stdio.h>
- X#include <sys/types.h>
- X
- X#include "i18n.h"
- X
- X#ifdef MEMDEBUG
- X#include "st.h"
- X
- X#define MemAlloc d_MemAlloc
- X#define MemFree d_MemFree
- X#define MemRealloc d_MemRealloc
- X#define MemCalloc d_MemCalloc
- X
- Xint MemAcct;
- Xint AcctTag;
- X
- Xstatic st_table *memHashTable;
- X
- Xtypedef struct {
- X unsigned int s;
- X int a;
- X int l;
- X char *f;
- X char *k;
- X} Mem;
- X
- Xstatic int
- XmemCompare(g1, g2)
- X char *g1, *g2;
- X{
- X return (g1 - g2);
- X}
- X
- X
- Xstatic int
- XmemHash(g1, modulus)
- X int g1;
- X int modulus;
- X{
- X return g1 % modulus;
- X}
- X
- Xstatic void
- XinsertAcctInfo(p, s, f, l, k)
- X void *p;
- X unsigned int s;
- X char *f;
- X int l;
- X char *k;
- X{
- X if (MemAcct) {
- X Mem *m;
- X MemAcct = 0; /*prevent nasty recursion*/
- X
- X if (memHashTable == NULL)
- X memHashTable = st_init_table(memCompare, memHash);
- X
- X m = (Mem *) malloc(sizeof(Mem));
- X m->s = s;
- X m->f = f;
- X m->l = l;
- X m->a = AcctTag;
- X m->k = k;
- X st_insert(memHashTable, p, m);
- X
- X MemAcct = 1;
- X }
- X}
- X
- X
- Xstatic enum st_retval
- Xdodump(key, rec)
- X void *key;
- X Mem *rec;
- X{
- X char extra[255];
- X
- X if (rec->k == NULL)
- X strcpy(extra, "\n");
- X else {
- X if (strcmp(rec->k, "(string)") == 0)
- X sprintf(extra, ":\"%s\"\n", key);
- X else
- X sprintf(extra, ":%s\n", rec->k);
- X }
- X
- X fprintf(stderr, "extant: %d) 0x%.8x, (f:%s, l:%d) (%d bytes)%s",
- X rec->a, key, rec->f, rec->l, rec->s, extra);
- X return ST_DELETE;
- X}
- X
- Xvoid
- XDumpExtant()
- X{
- X if (memHashTable)
- X st_foreach(memHashTable, dodump, NULL);
- X else
- X fprintf(stderr, "no accounting info availiable!\n");
- X}
- X
- X#endif
- X
- Xvoid *
- XMemAlloc(sz
- X#ifdef MEMDEBUG
- X , f, l, k
- X#endif
- X)
- X unsigned int sz;
- X#ifdef MEMDEBUG
- X char *f;
- X int l;
- X char *k;
- X#endif
- X{
- X void *p;
- X
- X if ((p = malloc(sz)) == NULL)
- X ErrorGeneral(gettext("Memory allocation failure."));
- X
- X memset((char *) p, 0, (int) sz);
- X
- X#ifdef MEMDEBUG
- X insertAcctInfo(p, sz, f, l, k);
- X#endif
- X
- X return p;
- X}
- X
- Xvoid *
- XMemCalloc(num, sz
- X#ifdef MEMDEBUG
- X , f, l
- X#endif
- X)
- X unsigned int num;
- X unsigned int sz;
- X#ifdef MEMDEBUG
- X char *f;
- X int l;
- X#endif
- X{
- X void *p;
- X
- X if ((p = calloc(num, sz)) == NULL)
- X ErrorGeneral(gettext("Memory array allocation failure."));
- X
- X memset((char *) p, 0, (int) sz * (int) num);
- X
- X#ifdef MEMDEBUG
- X insertAcctInfo(p, sz * num, f, l, NULL);
- X#endif
- X
- X return p;
- X}
- X
- Xvoid *
- XMemRealloc(p, sz)
- X void *p;
- X unsigned int sz;
- X{
- X void *t;
- X
- X if ((t = realloc(p, sz)) == NULL)
- X ErrorGeneral(gettext("Memory array allocation failure."));
- X
- X#ifdef MEMDEBUG
- X if (MemAcct && memHashTable) {
- X Mem *oldM;
- X MemAcct = 0;
- X (void) st_delete(memHashTable, &p, (char *) &oldM);
- X oldM->s = sz;
- X st_insert(memHashTable, t, oldM);
- X MemAcct = 1;
- X }
- X#endif
- X
- X return t;
- X}
- X
- X
- Xvoid
- XMemFree(p)
- X void *p;
- X{
- X if (p != NULL) {
- X#ifdef MEMDEBUG
- X if (MemAcct && memHashTable) {
- X Mem *oldM;
- X MemAcct = 0;
- X (void) st_delete(memHashTable, &p, (char *) &oldM);
- X free(oldM);
- X MemAcct = 1;
- X }
- X#endif
- X free(p);
- X }
- X}
- END_OF_FILE
- if test 3454 -ne `wc -c <'mem.c'`; then
- echo shar: \"'mem.c'\" unpacked with wrong size!
- fi
- # end of 'mem.c'
- fi
- if test -f 'olgx_impl.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'olgx_impl.h'\"
- else
- echo shar: Extracting \"'olgx_impl.h'\" \(2771 characters\)
- sed "s/^X//" >'olgx_impl.h' <<'END_OF_FILE'
- X#ident "@(#)olgx_impl.h 1.14 91/04/09 SMI"
- X
- X/*
- X * Copyright 1990 Sun Microsystems
- X */
- X
- X/*
- X * OPEN LOOK object drawing package
- X */
- X
- X#ifndef OL_PRIVATE_DEFINED
- X#define OL_PRIVATE_DEFINED
- X
- X#ifdef OW_I18N
- X/*
- X * I18N_Portability: May need to change the following #include to
- X * pickup the wchar_t and X11R5(-ish) Xlib functions definitions.
- X */
- X#include <widec.h>
- X#include <mltext/XFontSet.h>
- X#endif
- X#include <olgx/olgx.h>
- X
- X#define STRING_SIZE 128 /* max size of a glyph font string */
- X
- X#define VARHEIGHT_BUTTON_CORNER_DIMEN 7
- X
- X
- X#define False 0
- X#define True 1
- X
- X
- X/*
- X * OPEN LOOK constant definitions
- X */
- X
- X
- X/*
- X * Macro definitions
- X */
- X#define VARIABLE_LENGTH_MACRO(start_pos, offset) \
- X for (i = 0; i < num_add; i++) { \
- X string[start_pos+i] = offset + add_ins[i]; \
- X }
- X
- Xtypedef struct _per_disp_res_rec {
- X Display * dpy;
- X int screen;
- X GC_rec * gc_list_ptr;
- X Pixmap busy_stipple;
- X Pixmap grey_stipple;
- X struct _per_disp_res_rec * next;
- X} per_disp_res_rec, *per_disp_res_ptr;
- X
- X/*
- X * Definitions used by the color calculation code
- X */
- X#define XRGB 0xffff
- X#define MAXRGB 0xff
- X#define MAXH 360
- X#define MAXSV 1000
- X
- X#define VMUL 12 /* brighten by 20% (12 = 1.2*10) */
- X#define SDIV 2 /* unsaturate by 50% (divide by 2) */
- X#define VMIN 400 /* minimum highlight brightness of 40% */
- X
- Xtypedef struct {
- X int r,
- X g,
- X b;
- X} RGB;
- X
- Xtypedef struct {
- X int h,
- X s,
- X v;
- X} HSV;
- X
- X/*
- X * Private function declarations
- X */
- X
- Xint calc_add_ins();
- Xchar * olgx_malloc();
- Xvoid olgx_update_horizontal_slider();
- Xvoid olgx_update_vertical_slider();
- Xvoid olgx_update_vertical_gauge();
- Xvoid olgx_update_horiz_gauge();
- Xvoid olgx_free();
- Xvoid olgx_destroy_gcrec();
- Xvoid olgx_total_gcs();
- Xvoid olgx_initialise_gcrec();
- Xvoid olgx_draw_elevator();
- Xvoid olgx_error();
- Xvoid olgx_draw_pixmap_label();
- Xvoid olgx_draw_varheight_button();
- XPixmap olgx_get_busy_stipple();
- XPixmap olgx_get_grey_stipple();
- Xint gc_matches();
- Xint olgx_cmp_fonts();
- XGC_rec * olgx_get_gcrec();
- XGC_rec * olgx_gcrec_available();
- XGC_rec * olgx_set_color_smart();
- XGraphics_info * olgx_create_ginfo();
- Xper_disp_res_ptr olgx_get_perdisplay_list();
- X
- X/* ol_color.c */
- Xvoid hsv_to_rgb();
- Xvoid rgb_to_hsv();
- Xvoid rgb_to_xcolor();
- Xvoid hsv_to_xcolor();
- Xvoid xcolor_to_hsv();
- Xvoid olgx_hsv_to_3D();
- X
- X#endif !OL_PRIVATE_DEFINED
- X
- X
- X
- X
- X
- END_OF_FILE
- if test 2771 -ne `wc -c <'olgx_impl.h'`; then
- echo shar: \"'olgx_impl.h'\" unpacked with wrong size!
- fi
- # end of 'olgx_impl.h'
- fi
- if test -f 'properties.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'properties.h'\"
- else
- echo shar: Extracting \"'properties.h'\" \(1900 characters\)
- sed "s/^X//" >'properties.h' <<'END_OF_FILE'
- X/*
- X * (c) Copyright 1989 Sun Microsystems, Inc. Sun design patents
- X * pending in the U.S. and foreign countries. See LEGAL_NOTICE
- X * file for terms of the license.
- X */
- X
- X#ident "@(#)properties.h 26.5 91/09/14 SMI"
- X
- X#ifndef _OLWM_PROPERTIES_H
- X#define _OLWM_PROPERTIES_H
- X
- X/*
- X * Open Look Window Attribute structure
- X */
- Xtypedef struct {
- X unsigned long flags;
- X Atom win_type;
- X Atom menu_type;
- X unsigned long pin_initial_state;
- X unsigned long cancel;
- X} OLWinAttr;
- X#define OLWINATTRLENGTH (sizeof(OLWinAttr)/sizeof(unsigned long))
- X
- X/*
- X * Values for flags in OLWinAttr
- X */
- X#define WA_WINTYPE (1<<0)
- X#define WA_MENUTYPE (1<<1)
- X#define WA_PINSTATE (1<<2)
- X#define WA_CANCEL (1<<3)
- X
- X/*
- X * Values for flags of available top-level window-management properties
- X */
- X#define WMClassAvail (1<<0)
- X#define WMNameAvail (1<<1)
- X#define WMIconNameAvail (1<<2)
- X#define WMNormalHintsAvail (1<<3)
- X#define WMHintsAvail (1<<4)
- X#define WMTransientForAvail (1<<5)
- X#define WMProtocolsAvail (1<<6)
- X#define WMColormapWindowsAvail (1<<7)
- X#define WMStateAvail (1<<8)
- X#define OLWinAttrAvail (1<<9)
- X#define OLDecorAddAvail (1<<10)
- X#define OLDecorDelAvail (1<<11)
- X#define OLWindowStateAvail (1<<12)
- X#define OLLeftFooterAvail (1<<13)
- X#define OLRightFooterAvail (1<<14)
- X
- X#define ENTIRE_CONTENTS (10000000L)
- X
- Xextern void *GetWindowProperty();
- X
- Xextern int PropListAvailable();
- Xextern void PropSetAvailable();
- Xextern void PropClearAvailable();
- X
- Xextern Bool PropGetWMName();
- Xextern Bool PropGetWMIconName();
- Xextern Bool PropGetWMClass();
- Xextern Bool PropGetWMNormalHints();
- Xextern Bool PropGetWMHints();
- Xextern Bool PropGetWMProtocols();
- Xextern Bool PropGetWMTransientFor();
- Xextern Bool PropGetWMState();
- Xextern void PropSetWMState();
- Xextern Bool PropGetOLWindowState();
- Xextern Bool PropGetOLWinAttr();
- Xextern Bool PropGetOLDecorAdd();
- Xextern Bool PropGetOLDecorDel();
- X
- X
- X#endif /* _OLWM_PROPERTIES_H */
- END_OF_FILE
- if test 1900 -ne `wc -c <'properties.h'`; then
- echo shar: \"'properties.h'\" unpacked with wrong size!
- fi
- # end of 'properties.h'
- fi
- if test -f 'screen.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'screen.h'\"
- else
- echo shar: Extracting \"'screen.h'\" \(4189 characters\)
- sed "s/^X//" >'screen.h' <<'END_OF_FILE'
- X/*
- X * (c) Copyright 1989, 1990 Sun Microsystems, Inc. Sun design patents
- X * pending in the U.S. and foreign countries. See LEGAL_NOTICE
- X * file for terms of the license.
- X */
- X
- X#ident "@(#)screen.h 1.1 olvwm version 1/3/92"
- X
- X/*
- X * Based on
- X#ident "@(#)screen.h 26.17 91/09/14 SMI"
- X *
- X */
- X
- X#ifndef _OLWM_SCREEN_H
- X#define _OLWM_SCREEN_H
- X
- X#include <olgx/olgx.h>
- X
- X/*
- X * Index's into GC array of ScreenInfo struct
- X */
- Xtypedef enum { ROOT_GC,
- X FOREGROUND_GC,
- X BORDER_GC,
- X WINDOW_GC,
- X WORKSPACE_GC,
- X BUSY_GC,
- X ICON_NORMAL_GC,
- X ICON_MASK_GC,
- X ICON_BORDER_GC,
- X INPUTFOCUS_GC,
- X VDM_GC,
- X VDM_INPUT_GC,
- X NUM_GCS
- X} ScreenGCIndex;
- X
- X/*
- X * Index's into Graphics_info array of ScreenInfo struct
- X */
- Xtypedef enum { NORMAL_GINFO,
- X BUTTON_GINFO,
- X TEXT_GINFO,
- X REVPIN_GINFO,
- X INPUTFOCUS_GINFO,
- X NUM_GINFOS
- X} ScreenGinfoIndex;
- X
- X/*
- X * Index's into Pixmap array of ScreenInfo struct
- X */
- Xtypedef enum {
- X BUSY_STIPPLE,
- X ICON_BITMAP,
- X ICON_MASK,
- X PROTO_DRAWABLE,
- X GRAY50_BITMAP,
- X NUM_PIXMAPS
- X} ScreenPixmapIndex;
- X
- X/*
- X * ColorMapFocus - client/window which has colormap focus
- X */
- Xtypedef struct _colormapfocus {
- X struct _client *client;
- X struct _wingeneric *window;
- X Bool locked;
- X} ColorMapFocus;
- X
- X/*
- X * BackgroundType - type of workspace background
- X */
- Xtypedef enum { BG_None, BG_Color, BG_Pixmap } BackgroundType;
- X
- X/*
- X * ColorInfo - window/workspace/etc colors
- X */
- Xtypedef struct _colorinfo {
- X unsigned long flags;
- X Bool reverseVideo;
- X unsigned long black, white;
- X unsigned long fgColor, bgColor;
- X unsigned long bg0Color,bg1Color,bg2Color,bg3Color;
- X unsigned long borderColor;
- X BackgroundType workspaceType;
- X unsigned long workspaceColor;
- X unsigned long workspaceRootPixel;
- X unsigned long virtualFgColor, virtualBgColor;
- X unsigned long virtualGridColor, virtualFontColor;
- X unsigned long virtualPixmapColor;
- X unsigned long virtualInputColor;
- X unsigned long inputBg0Color,inputBg1Color,
- X inputBg2Color,inputBg3Color;
- X unsigned long vIconColor;
- X} ColorInfo;
- X
- X#define CIWorkspaceColorAlloced (1L<<0)
- X#define CIWindowColorAlloced (1L<<1)
- X#define CIForegroundColorAlloced (1L<<2)
- X#define CIBackgroundColorAlloced (1L<<3)
- X#define CIBorderColorAlloced (1L<<4)
- X#define CIVirtualForegroundColorAlloced (1L<<5)
- X#define CIVirtualBackgroundColorAlloced (1L<<6)
- X#define CIVirtualFontColorAlloced (1L<<7)
- X#define CIVirtualGridColorAlloced (1L<<8)
- X#define CIInputFocusColorAlloced (1L<<9)
- X#define CIVirtualPixmapColorAlloced (1L<<10)
- X
- X/*
- X * ScreenInfo - Per screen info
- X */
- Xtypedef struct _screeninfo {
- X int screen;
- X Window rootid;
- X struct _winroot *rootwin;
- X int depth;
- X Visual *visual;
- X Colormap colormap;
- X Bool iscolor;
- X Bool use3D;
- X ColorInfo colorInfo;
- X GC gc[NUM_GCS];
- X Graphics_info *gi[NUM_GINFOS];
- X Pixmap pixmap[NUM_PIXMAPS];
- X struct _menuCache *menuCache;
- X ColorMapFocus cmapfocus;
- X int framepos;
- X struct _iconGrid *iconGrid;
- X char **environment;
- X int instanceQ; /* quark for this screen's
- X instance name */
- X int dfltIconWidth, dfltIconHeight;
- X struct _virtualdesktop *vdm;
- X struct _menu *menuTable[NUM_MENUS];
- X struct {
- X struct _button **frameFullButtons;
- X struct _button **frameDismissButtons;
- X struct _button **frameLimitedButtons;
- X } menuButtons;
- X} ScreenInfo;
- X
- X/*
- X * Global functions from screen.c
- X */
- Xextern void InitScreens(/* Display *dpy */);
- Xextern void DestroyScreens(/* Display *dpy */);
- Xextern ScreenInfo *GetFirstScrInfo();
- Xextern ScreenInfo *GetScrInfoOfScreen(/* int screen */);
- Xextern ScreenInfo *GetScrInfoOfRoot(/* Window root */);
- Xextern void SetWorkspaceColor(/* Display *dpy */);
- Xextern void SetWindowColor(/* Display *dpy */);
- Xextern void SetForegroundColor(/* Display *dpy */);
- Xextern void SetBackgroundColor(/* Display *dpy */);
- Xextern void SetBorderColor(/* Display *dpy */);
- Xextern void SetTitleFont(/* Display *dpy */);
- Xextern void SetTextFont(/* Display *dpy */);
- Xextern void SetButtonFont(/* Display *dpy */);
- Xextern void SetIconFont(/* Display *dpy */);
- Xextern void SetGlyphFont(/* Display *dpy */);
- Xextern void SetIconLocation(/*Display *dpy */);
- Xextern void UpdateScreenResources();
- X
- X#endif /* _OLWM_SCREEN_H */
- END_OF_FILE
- if test 4189 -ne `wc -c <'screen.h'`; then
- echo shar: \"'screen.h'\" unpacked with wrong size!
- fi
- # end of 'screen.h'
- fi
- if test -f 'slave.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'slave.c'\"
- else
- echo shar: Extracting \"'slave.c'\" \(3354 characters\)
- sed "s/^X//" >'slave.c' <<'END_OF_FILE'
- X/*
- X * (c) Copyright 1989 Sun Microsystems, Inc. Sun design patents
- X * pending in the U.S. and foreign countries. See LEGAL_NOTICE
- X * file for terms of the license.
- X */
- X/* ----------------------------------------------------------------------
- X * slave.c
- X * ---------------------------------------------------------------------*/
- X
- X#ident "@(#)slave.c 26.8 91/09/14 SMI"
- X
- X#include <sys/types.h>
- X#include <sys/time.h>
- X#include <sys/resource.h>
- X#include <X11/Xlib.h>
- X#include <signal.h>
- X#include <stdio.h>
- X#include "cmdstream.h"
- X
- X/* ----------------------------------------------------------------------
- X * Local Data
- X * ---------------------------------------------------------------------*/
- Xtypedef struct {
- X char *program;
- X pid_t pid;
- X} SlaveInfo;
- X
- Xstatic SlaveInfo slaveInfo = {
- X "olwmslave", 0
- X};
- X
- X/* ----------------------------------------------------------------------
- X * Local Forward Declarations
- X * ---------------------------------------------------------------------*/
- Xvoid SlaveFailure();
- X
- X/* ----------------------------------------------------------------------
- X * SlaveStart
- X * ---------------------------------------------------------------------*/
- Xpid_t
- XSlaveStart(argv)
- X char **argv;
- X{
- X int input[2],output[2];
- X struct rlimit rlimit;
- X int fd,maxfd;
- X
- X if (pipe(input) == -1) {
- X ErrorWarning("Couldn't create input pipe for olwmslave");
- X perror("pipe");
- X SlaveFailure();
- X return -1;
- X }
- X if (pipe(output) == -1) {
- X ErrorWarning("Couldn't create output pipe for olwmslave");
- X perror("pipe");
- X SlaveFailure();
- X (void)close(input[0]);
- X (void)close(input[1]);
- X return -1;
- X }
- X
- X slaveInfo.pid = fork();
- X
- X switch (slaveInfo.pid) {
- X case -1: /* error */
- X (void)close(input[0]);
- X (void)close(input[1]);
- X (void)close(output[0]);
- X (void)close(output[1]);
- X SlaveFailure();
- X break;
- X case 0: /* Slave */
- X dup2(input[0],0);
- X dup2(output[1],1);
- X if (getrlimit(RLIMIT_NOFILE,&rlimit) == -1)
- X maxfd = 0;
- X else
- X maxfd = rlimit.rlim_cur;
- X for (fd=3; fd<maxfd ; fd++) {
- X (void)close(fd);
- X }
- X argv[0] = slaveInfo.program;
- X if (execvp(slaveInfo.program,argv) == -1) {
- X SlaveFailure();
- X exit(-1);
- X }
- X break;
- X default: /* parent */
- X SetCmdStream(fdopen(output[0],"r"), /* reader */
- X fdopen(input[1],"w")); /* writer */
- X break;
- X }
- X return slaveInfo.pid;
- X}
- X
- X/* ----------------------------------------------------------------------
- X * SlaveStop - call to stop Slave process
- X * ---------------------------------------------------------------------*/
- Xvoid
- XSlaveStop()
- X{
- X if (slaveInfo.pid == 0)
- X return;
- X if (kill(slaveInfo.pid,SIGTERM) == -1) {
- X /* -- dont really want this error message
- X ErrorWarning("Couldn't kill olwmslave");
- X perror("kill");
- X */
- X }
- X}
- X
- X/* ----------------------------------------------------------------------
- X * SlaveStopped - called when Slave process has died
- X * ---------------------------------------------------------------------*/
- Xvoid
- XSlaveStopped()
- X{
- X SetCmdStream((FILE *)0,(FILE *)0);
- X}
- X
- X/* ----------------------------------------------------------------------
- X * SlaveFailure - called if Slave process wont/cant start
- X * ---------------------------------------------------------------------*/
- Xstatic void
- XSlaveFailure()
- X{
- X char errbuf[256];
- X
- X sprintf(errbuf,
- X "Couldn't start %s; Help for olwm will not work.",
- X slaveInfo.program);
- X ErrorWarning(errbuf);
- X}
- END_OF_FILE
- if test 3354 -ne `wc -c <'slave.c'`; then
- echo shar: \"'slave.c'\" unpacked with wrong size!
- fi
- # end of 'slave.c'
- fi
- if test -f 'virtual.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'virtual.h'\"
- else
- echo shar: Extracting \"'virtual.h'\" \(4412 characters\)
- sed "s/^X//" >'virtual.h' <<'END_OF_FILE'
- X/*
- X * (c) Copyright 1991 Scott Oaks
- X * See LEGAL_NOTICE file for terms of the license.
- X */
- X
- X#ident "@(#)virtual.h 1.1 olvwm version 1/3/92"
- X
- X#ifndef _OLWM_VIRTUAL_H
- X#define _OLWM_VIRTUAL_H
- X
- X/*
- X * The virtual desktop exists as a logical abstraction only; there is no
- X * actual X window called the virtual desktop to which the frames are
- X * reparented (unlike other virtual managers). Frames are still reparented
- X * to the root.
- X *
- X * Moving the virtual desktop then means that we have to move each window;
- X * windows which no longer appear on the screen have coordinates outside
- X * of [(0,0);(1152,900)] (or whatever the size of your screen is). This
- X * means that windows on the screen still map to (0,0);(1152,900).
- X *
- X * Moving each window doesn't really entail much overhead, since even if
- X * we had a virtual root and shifted it, we'd still have to send synthetic
- X * configure events to each window.
- X *
- X *
- X * The Virtual Desktop is the logical abstraction and is several screens
- X * large. The VDM is the X window which displays this abstraction and
- X * is a small X window on the display. The VDM will have a frame and look
- X * like any other base window, but it may never be unstuck.
- X
- X <- absoluteWidth ->
- X |-----------------------------------------------------|
- X ^ | |
- X | | |
- X a | |
- X b | ->offsetX, offsetY (negative from up/left|
- X s | | |
- X o | ******************* |
- X l | * * |
- X u | * * |
- X t | * * |
- X e | * * |
- X H | * * |
- X e | ******************* |
- X i | |
- X g | |
- X h | |
- X t |-----------------------------------------------------|
- X
- X */
- X
- Xtypedef struct _virtualresources {
- X char *size;
- X char *geometry;
- X char *iconGeometry;
- X int scale;
- X VirtualGridType grid;
- X char *background;
- X} VirtualResources;
- X
- Xtypedef struct _virtualdesktop {
- X struct _client *client; /* Handle to client structure; this
- X * leads to a recursive pointer trail */
- X
- X int offsetX; /* Position of the upper/left corner */
- X int offsetY; /* of the current screen on the VDM
- X * These will always be <= 0, since it
- X * should be added to a windows coord
- X * to determine where on the virtual
- X * desktop the window is */
- X
- X int absoluteWidth; /* Width of virtual desktop in pixels */
- X int absoluteHeight; /* Height of virtual desk in pixels */
- X
- X int columns; /* Number of logical screens across */
- X int rows; /* Number of logical screens down */
- X int height; /* height of the VDM in pixels */
- X int width; /* width of the VDM in pixels */
- X int screenWidth; /* Width of logical screen within VDM */
- X int screenHeight; /* Height of logical screen within VDM*/
- X int screenX; /* X position of current screen in VDM*/
- X int screenY; /* Y position of current screen in VDM*/
- X int max_ascent; /* max ascent of font in VDM */
- X int saveX; /* for save/restore, last position */
- X int saveY; /* for save/restore, last position */
- X VirtualResources *resources; /* Screen-specific virtual resources */
- X} VirtualDesktop;
- X
- X/*
- X * Structure to bundle the information needed to perform a drag/move within
- X * the VDM
- X */
- Xtypedef struct _vdmstuff {
- X VirtualDesktop *vdm; /* Virtual Desktop involved in move */
- X int initX, initY; /* Initial location of screenX */
- X int pointerX, /* Initial press of button in move */
- X pointerY;
- X int numMoves; /* number of times we got a motion ev */
- X GC gc; /* gc to draw with (use root gc */
- X} VDMstuff;
- X
- X/*
- X * Structure to bundle amount a view into the desktop has moved
- X */
- Xtypedef struct deltas {
- X double delta_x, delta_y;
- X};
- X
- X#endif /* _OLWM_VIRTUAL_H */
- END_OF_FILE
- if test 4412 -ne `wc -c <'virtual.h'`; then
- echo shar: \"'virtual.h'\" unpacked with wrong size!
- fi
- # end of 'virtual.h'
- fi
- if test -f 'winbusy.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'winbusy.c'\"
- else
- echo shar: Extracting \"'winbusy.c'\" \(5649 characters\)
- sed "s/^X//" >'winbusy.c' <<'END_OF_FILE'
- X/*
- X * (c) Copyright 1989, 1990 Sun Microsystems, Inc. Sun design patents
- X * pending in the U.S. and foreign countries. See LEGAL_NOTICE
- X * file for terms of the license.
- X */
- X
- X#ident "@(#)winbusy.c 1.1 olvwm version 1/3/92"
- X
- X/*
- X * Based on
- X#ident "@(#)winbusy.c 26.8 91/09/14 SMI"
- X *
- X */
- X
- X#include <errno.h>
- X#include <stdio.h>
- X#include <X11/Xos.h>
- X#include <X11/Xlib.h>
- X#include <X11/Xutil.h>
- X#include <X11/Xatom.h>
- X#include <olgx/olgx.h>
- X
- X#include "i18n.h"
- X#include "ollocale.h"
- X#include "mem.h"
- X#include "olwm.h"
- X#include "win.h"
- X#include "globals.h"
- X
- X/***************************************************************************
- X* global data
- X***************************************************************************/
- X
- X/***************************************************************************
- X* private data
- X***************************************************************************/
- X
- Xstatic ClassBusy classBusy;
- Xstatic Bool busyDisabled = True;
- X
- X/***************************************************************************
- X* private functions
- X***************************************************************************/
- X
- X/*
- X * DestroyBusy -- destroy the busy window resources and free any allocated
- X * data.
- X */
- Xstatic int
- XdestroyBusy(dpy, winInfo)
- XDisplay *dpy;
- XWinBusy *winInfo;
- X{
- X /* free our data and throw away window */
- X XUndefineCursor(dpy, winInfo->core.self);
- X WinRemoveChild(winInfo->core.parent,winInfo);
- X DestroyWindow(winInfo);
- X MemFree(winInfo);
- X}
- X
- X
- X/*
- X * widthfuncBusy - recomputes the height of the busy window
- X */
- Xint
- XwidthfuncBusy(win, pxcre)
- XWinBusy *win;
- XXConfigureRequestEvent *pxcre;
- X{
- X WinGenericFrame *frame = (WinGenericFrame *)win->core.parent;
- X return frame->fcore.panewin->core.width;
- X}
- X
- X/*
- X * heightfuncBusy - recomputes the height of the busy window
- X */
- Xint
- XheightfuncBusy(win, pxcre)
- XWinBusy *win;
- XXConfigureRequestEvent *pxcre;
- X{
- X WinGenericFrame *frame = (WinGenericFrame *)win->core.parent;
- X return frame->fcore.panewin->core.height;
- X}
- X
- X
- X/*
- X *
- X * REMIND
- X *
- X * Busy windows are effectively "turned off" by the static Bool busyDisabled.
- X * The reason for this is that having a busy window on the screen over the
- X * application's window will prevent that application from receiving drag-n-
- X * drop messages properly. When busyDisabled is set, the following newconfig,
- X * newpos, and setconfig functions prevent the busy window from changing from
- X * its initial state. The initial state is set in MakeBusy, which makes the
- X * busy window very small and above the upper left corner of the frame window.
- X */
- X
- Xstatic int
- XnewConfigBusy(winInfo, pxcre)
- X WinBusy *winInfo;
- X XConfigureRequestEvent *pxcre;
- X{
- X if (busyDisabled)
- X return 0;
- X else
- X return WinNewConfigFunc(winInfo, pxcre);
- X}
- X
- X
- Xstatic int
- XnewPosBusy(winInfo, x, y)
- X WinBusy *winInfo;
- X int x, y;
- X{
- X if (busyDisabled)
- X return 0;
- X else
- X return WinNewPosFunc(winInfo, x, y);
- X}
- X
- X
- Xstatic int
- XsetConfigBusy(dpy, winInfo)
- X Display *dpy;
- X WinBusy *winInfo;
- X{
- X if (busyDisabled)
- X return 0;
- X else
- X return WinSetConfigFunc(dpy, winInfo);
- X}
- X
- X
- X
- X/***************************************************************************
- X* global functions
- X***************************************************************************/
- X
- X/*
- X * MakeBusy -- create the busy window. The Busy window is exactly the
- X * same size as its parent and gets all keyboard and pointer events
- X * for the frame. The parent is assumed to be a frame.
- X */
- XWinBusy *
- XMakeBusy(dpy, par)
- XDisplay *dpy;
- XWinGenericFrame *par;
- X{
- X WinBusy *w;
- X Window win;
- X unsigned long valuemask;
- X XSetWindowAttributes attributes;
- X
- X /* create the associated structure */
- X w = MemNew(WinBusy);
- X w->core.kind = WIN_BUSY;
- X w->class = &classBusy;
- X WinAddChild(par,w);
- X w->core.children = NULL;
- X w->core.client = par->core.client;
- X if (busyDisabled) {
- X w->core.x = -10;
- X w->core.y = -10;
- X w->core.width = 1;
- X w->core.height = 1;
- X } else {
- X w->core.x = par->fcore.panewin->core.x;
- X w->core.y = par->fcore.panewin->core.y;
- X w->core.width = par->fcore.panewin->core.width;
- X w->core.height = par->fcore.panewin->core.height;
- X }
- X w->core.dirtyconfig = CWX | CWY | CWWidth | CWHeight;
- X w->core.exposures = NULL;
- X w->isFocus = False;
- X
- X /* inheirit help from the parent frame */
- X w->core.helpstring = par->core.helpstring;
- X
- X /* create the window */
- X attributes.event_mask = ButtonReleaseMask | ButtonPressMask |
- X KeyPressMask;
- X attributes.cursor = GRV.BusyPointer;
- X valuemask = CWEventMask | CWCursor;
- X win = XCreateWindow(dpy, par->core.self,
- X w->core.x, w->core.y,
- X w->core.width, w->core.height,
- X 0,
- X CopyFromParent,
- X InputOnly,
- X CopyFromParent,
- X valuemask,
- X &attributes);
- X
- X /* fill out remaining fields */
- X w->core.self = win;
- X WIInstallInfo(w);
- X MapRaised(w);
- X
- X return w;
- X}
- X
- Xvoid
- XBusyInit(dpy)
- XDisplay *dpy;
- X{
- X classBusy.core.kind = WIN_BUSY;
- X classBusy.core.xevents[ButtonPress] = NoFocusEventBeep;
- X classBusy.core.xevents[ButtonRelease] = NoFocusEventBeep;
- X classBusy.core.xevents[KeyPress] = NoFocusEventBeep;
- X classBusy.core.xevents[KeyRelease] = NoFocusEventBeep;
- X classBusy.core.focusfunc = NULL;
- X classBusy.core.drawfunc = NULL;
- X classBusy.core.destroyfunc = destroyBusy;
- X classBusy.core.selectfunc = NULL;
- X classBusy.core.newconfigfunc = newConfigBusy;
- X classBusy.core.newposfunc = newPosBusy;
- X classBusy.core.setconfigfunc = setConfigBusy;
- X classBusy.core.createcallback = NULL;
- X classBusy.core.heightfunc = heightfuncBusy;
- X classBusy.core.widthfunc = widthfuncBusy;
- X}
- END_OF_FILE
- if test 5649 -ne `wc -c <'winbusy.c'`; then
- echo shar: \"'winbusy.c'\" unpacked with wrong size!
- fi
- # end of 'winbusy.c'
- fi
- echo shar: End of archive 20 \(of 21\).
- cp /dev/null ark20isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 21 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Molecular Simulations, Inc. mail: dcmartin@postgres.berkeley.edu
- 796 N. Pastoria Avenue uucp: uwvax!ucbvax!dcmartin
- Sunnyvale, California 94086 at&t: 408/522-9236
-